#include <stdio.h>

void func1(){
	// 局部变量生命周期是最近的{}结束
	// 每次函数调用都会重新分配空间并用10初始化x
	int x = 10;
	x++;
	printf("%d\n", x);
}

int y = 20;

void func2(){
	// static修饰的局部变量 在程序运行时(main函数前)就分配好空间了
	// static修饰的未初始化的变量也存在bss段 初始化的存在 data段
	// 下面这行代码并不会每次调用函数重复执行 只会在程序开始时执行一次
	static int x = 10; // x 的生命周期被延长至整个程序结束
	x++;
	printf("%d\n", x);
}

int main(int argc, const char *argv[])
{
	func1(); // 11
	func1(); // 11
	func1(); // 11

	printf("------------------\n");

	func2(); // 11
	func2(); // 12
	func2(); // 13

	// 全局变量和static修饰的局部变量区别
	// 作用域不同
	printf("y = %d\n", y); // 20
	//printf("x = %d\n", x); // 拒绝访问 因为x还是局部变量

	return 0;
}
